const express = require('express');
const cors = require('cors');
const { initDatabase } = require('./config/init');
const routes = require('./routes');
const logger = require('./utils/logger');

const app = express();

// 中间件配置
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// 路由配置
app.use('/api', routes);

// 错误处理中间件
app.use((err, req, res, next) => {
  logger.error(err.stack);
  res.status(500).send('服务器内部错误！');
});

// 启动服务器
const PORT = process.env.PORT || 3000;

// 先初始化数据库，然后启动服务器
async function startServer() {
  try {
    await initDatabase();
    app.listen(PORT, () => {
      logger.info(`服务器运行在端口 ${PORT}`);
    });
  } catch (error) {
    logger.error('服务器启动失败:', error);
    process.exit(1);
  }
}

startServer();

module.exports = app; 